package com.xueyi.aixihu.service;

import com.xueyi.aixihu.entity.vo.*;
import com.xueyi.aixihu.exception.SzException;
import com.xueyi.aixihu.reqeust.*;

import java.util.List;

/**
 * @author hxs
 * @createDate 2023/6/29 11:07
 * @description 财务三资审核接口
 */
public interface ReportFormsAuditService {
    /**
     * 查询待审核报表
     *
     * @param findWaitAuditReportFormListReq 参数
     * @return 列表
     */
    DataList<FindWaitAuditReportFormListVo> findWaitAuditReportFormList(FindWaitAuditReportFormListReq findWaitAuditReportFormListReq) throws SzException;

    /**
     * 查询镇级待审核财务报表
     *
     * @param findTownWaitAuditFinanceListReq 参数
     * @return 列表
     */
    DataList<FindWaitAuditReportFormListVo> findTownWaitAuditFinanceList(FindTownWaitAuditFinanceListReq findTownWaitAuditFinanceListReq) throws SzException;

    /**
     * 通过审核
     *
     * @param agreePassAuditReq 参数
     */
    void agreePassAudit(AgreePassAuditReq agreePassAuditReq) throws SzException;

    /**
     * <<<<<<< HEAD
     * 查询村级待审核财务报表
     *
     * @param findWaitAuditReportFormListReq
     * @return
     */
    DataList<FindWaitAuditReportFormListVo> findAreaFinanceList(FindWaitAuditReportFormListReq findWaitAuditReportFormListReq) throws SzException;

    /**
     * 查询不同状态的条数
     *
     * @param findTownWaitAuditFinanceListReq
     * @return
     */
    FinanceExpenseSizeVo findFinanceAuditTypeSize(FindTownWaitAuditFinanceListReq findTownWaitAuditFinanceListReq) throws SzException;

    /**
     * 通过审核
     *
     * @param agreePassAuditReq 参数
     */
    void agreeThreeAudit(AgreePassAuditReq agreePassAuditReq) throws SzException;

    /**
     * 查询镇级财务报表页面数据
     *
     * @param reportType
     * @return 页面数据
     */
    FindWaitFinanceSizeVo findWaitFinanceSize(FindWaitFinanceSizeReq reportType) throws SzException;

    /**
     * 通过报表id查询报表
     *
     * @param id 报表id
     * @return 报表
     */
    AxhFinanceVo findFinanceById(Integer id) throws SzException;

    /**
     * 查询报表审核记录日志
     *
     * @param id    报表id
     * @param aTrue
     * @return 日志列表
     */
    List<AxhAuditFinanceLogVo> findReportFormsAuditLog(Integer id, Boolean aTrue) throws SzException;

    /**
     * 修改报表信息
     *
     * @param updateReportFormInfoReq 参数
     */
    void updateReportFormInfo(UpdateReportFormInfoReq updateReportFormInfoReq) throws SzException;

    /**
     * 转化为草稿
     *
     * @param id 报表id
     */
    void transferDraft(Integer id) throws SzException;
}
